package org.aeon.fasttasks.core.annotation;

import org.aeon.fasttasks.core.Task;
import org.aeon.fasttasks.core.scanner.TaskScannerRegistrar;
import org.springframework.context.annotation.Import;
import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.*;

/**
 * @author aeon
 * @createTime 2025/08/12  10:33
 * @description 指定扫描任务基本包
 */

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Import(TaskScannerRegistrar.class)
public @interface TaskScan {

    /**
     * {@link #basePackages()}属性的别名。
     *
     * @return
     * @see #basePackages()
     */
    @AliasFor("basePackages")
    String[] value() default {};

    /**
     * 需要扫描的任务所在基本包名称
     * {@link #value()}
     *
     * @return
     */
    @AliasFor("value")
    String[] basePackages() default {};

    /**
     * 需要扫描的任务注解类型
     *
     * @return
     */
    Class<? extends Annotation>[] annotationClass() default {};

    /**
     * 此属性指定扫描仪将搜索的父级。
     *
     * @return
     */
    Class<? extends Task> markerInterface() default Task.class;
}
